// 基于 axios 封装的请求模块
import axios from 'axios'
// 引入token 的方法
import { getToken } from './stroage'
// 解决大数问题
import JSONbig from 'json-bigint'

// 创建一个 axios 实例
const request = axios.create({
  baseURL: 'http://api-toutiao-web.itheima.net/', // 请求的基础地址
  transformResponse: [function (data) {
    // 这里的data是字符串，在这个字符串的是没有丢失精度的，所以需要在这里先把精度调好
    // console.log(data)
    // 后端返回数据可能不是 JSON 字符串，而JSONbig.parse()只能处理JSON字符串, try catch一下
    try {
      // 作用1：把json字符串转为js对象
      // 作用2：把里面的大数字做安全处理
      return JSONbig.parse(data)
    } catch (err) {
      return data
    }
  }],
  // 如果请求3秒后，后台没给响应，直接报错
  timeout: 3000
})

// 添加请求拦截器
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 任何请求都会经过这里
  // config 是当前请求相关的配置信息对象
  // config 是可以修改的
  // 统一的设置token
  // const token = window.localStorage.getItem('token')
  const token = getToken()

  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  // 当 return config 之后请求会真正的发出去
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// // 添加响应拦截器
// axios.interceptors.response.use(function (response) {
//   // 对响应数据做点什么
//   console.log('拦截到了响应', response)
//   return response.data
// }, function (error) {
//   // 对响应错误做点什么
//   return Promise.reject(error)
// })

// 导出请求方法
export default request

// 谁要使用谁就加载 request 模块
// import request from 'request.js'
// request.xxx
